<template><div><h2 id="yii-是什么" tabindex="-1"><a class="header-anchor" href="#yii-是什么"><span>Yii 是什么</span></a></h2>
<p>Yii 是一个高性能，基于组件的 PHP 框架，用于快速开发现代 Web 应用程序。 名字 Yii （读作 <code v-pre>易</code>）在中文里有“极致简单与不断演变”两重含义， 也可看作 <strong>Yes It Is</strong>! 的缩写。</p>
<h2 id="历史" tabindex="-1"><a class="header-anchor" href="#历史"><span>历史</span></a></h2>
<p>Yii 的创始人 <a href="http://github.com/qiangxue" title="薛强" target="_blank" rel="noopener noreferrer">薛强</a> 是一位美籍华人，他从2008年开始开发 Yii 项目。强以前开发和维护 <a href="http://www.pradoframework.net/" title="Prado" target="_blank" rel="noopener noreferrer">Prado</a> 框架，凭借多年的经验和该项目聚集地的开发者的反馈，强意识到，需要一个非常快速的，安全的，专业的框架。为了满足 Web 2.0 应用程序开发的期望，他为此量身定制了 Yii。</p>
<p>2008年12月3日，经过近一年的开发，Yii 1.0 正式向公众发布。</p>
<p>2010年1月10日，Yii 1.1 正式发布。</p>
<p>2014年10月12日，Yii 2.0 正式发布。</p>
<p>2015年6月以后，薛强不再担任 Yii 负责人，由 <a href="http://github.com/cebe" title="Carsten Brandt" target="_blank" rel="noopener noreferrer">Carsten Brandt</a> 接任，强随后转投 go 语言怀抱，并开发了 <a href="http://github.com/go-ozzo" title="OZZO" target="_blank" rel="noopener noreferrer">OZZO</a> Web 框架，依稀可见当年的 Yii 的影子。</p>
<p>2018年，项目负责人为 <a href="http://github.com/SilverFire" title="Dmytro Naumenko" target="_blank" rel="noopener noreferrer">Dmytro Naumenko</a>，来自乌克兰。</p>
<p>从2019年1月至今，项目负责人为 <a href="http://github.com/samdark" title="Alexander Makarov" target="_blank" rel="noopener noreferrer">Alexander Makarov</a>，来自战斗民族。</p>
<h2 id="借鉴" tabindex="-1"><a class="header-anchor" href="#借鉴"><span>借鉴</span></a></h2>
<p>Yii的很多想法来自其他著名Web编程框架和应用程序。下面是一个简短的清单。</p>
<ul>
<li><a href="http://www.pradoframework.net/" target="_blank" rel="noopener noreferrer">Prado</a>：这是 Yii 的主要思想来源。Yii 采用了基于组件和事件驱动编程模式，数据库抽象层，模块化的应用架构，国际化和本地化，和许多它的其他特点和功能。</li>
<li><a href="http://rubyonrails.org/" target="_blank" rel="noopener noreferrer">Ruby on Rails</a>：Yii 继承它的配置的思想。还引用它的 Active Record 的 ORM 设计模式。</li>
<li><a href="http://jquery.com/" target="_blank" rel="noopener noreferrer">jQuery</a>：这是集成在 Yii 为基础的 JavaScript 框架。</li>
<li><a href="http://symfony.com/" target="_blank" rel="noopener noreferrer">Symfony</a>：Yii 引用它的过滤设计和插件架构。</li>
<li><a href="http://www.joomla.org/" target="_blank" rel="noopener noreferrer">Joomla</a>：Yii 引用其模块化设计和信息翻译方案。</li>
</ul>
<h2 id="yii-最适合做什么" tabindex="-1"><a class="header-anchor" href="#yii-最适合做什么"><span>Yii 最适合做什么？</span></a></h2>
<p>Yii 是一个通用的 Web 编程框架，即可以用于开发各种用 PHP 构建的 Web 应用。 因为基于组件的框架结构和设计精巧的缓存支持，它特别适合开发大型应用，如门户网站、社区、内容管理系统（CMS）、 电子商务项目和 RESTful Web 服务等。</p>
<h2 id="yii-和其他框架相比呢" tabindex="-1"><a class="header-anchor" href="#yii-和其他框架相比呢"><span>Yii 和其他框架相比呢？</span></a></h2>
<p>如果你有其它框架使用经验，那么你会很开心看到 Yii 所做的努力：</p>
<ul>
<li>和其他 PHP 框架类似，Yii 实现了 MVC（Model-View-Controller） 设计模式并基于该模式组织代码。</li>
<li>Yii 的代码简洁优雅，这是它的编程哲学。 它永远不会为了刻板地遵照某种设计模式而对代码进行过度的设计。</li>
<li>Yii 是一个全栈框架，提供了大量久经考验，开箱即用的特性： 对关系型和 NoSQL 数据库都提供了查询生成器和 ActiveRecord；RESTful API 的开发支持；多层缓存支持，等等。</li>
<li>Yii 非常易于扩展。你可以自定义或替换几乎任何一处核心代码。你还会受益于 Yii 坚实可靠的扩展架构，使用、再开发或再发布扩展。</li>
<li>高性能始终是 Yii 的首要目标之一。</li>
</ul>
<p>Yii 不是一场独角戏，它由一个 <a href="https://www.yiiframework.com/team" target="_blank" rel="noopener noreferrer">强大的开发者团队</a> 提供支持， 也有一个庞大的专家社区，持续不断地对 Yii 的开发作出贡献。 Yii 开发者团队始终对 Web 开发趋势和其他框架及项目中的最佳实践和特性保持密切关注， 那些有意义的最佳实践及特性会被不定期的整合进核心框架中， 并提供简单优雅的接口。</p>
<h2 id="yii-版本" tabindex="-1"><a class="header-anchor" href="#yii-版本"><span>Yii 版本</span></a></h2>
<p>Yii 当前有两个主要版本：1.1 和 2.0。<br>
1.1 版是上代的老版本，现在处于维护状态。</p>
<p>2.0 版是一个完全重写的版本，采用了最新的技术和协议，包括依赖包管理器 Composer、PHP 代码规范 PSR、命名空间、Traits（特质）等等。 2.0 版代表新一代框架，是未来几年中我们的主要开发版本。 本指南主要基于 2.0 版编写。</p>
<p><strong>注：</strong> 3.0 新版本目前正在研发中，预计2022年下半年发布，<a href="https://www.yiiframework.com/yii3-progress" title="点此查看Yii3进度" target="_blank" rel="noopener noreferrer">点此查看Yii3进度</a></p>
<h2 id="学前准备工作" tabindex="-1"><a class="header-anchor" href="#学前准备工作"><span>学前准备工作</span></a></h2>
<p>Yii 的学习曲线并不像其他 PHP 框架那样陡峭，但仍然需要一些基础知识。</p>
<h3 id="php" tabindex="-1"><a class="header-anchor" href="#php"><span>PHP</span></a></h3>
<p>Yii 是一个 PHP 框架，因此请确保您 <a href="https://www.php.net/manual/zh/langref.php" target="_blank" rel="noopener noreferrer">阅读并理解语言参考</a>。用 Yii 进行开发时，您将以面向对象的方式编写代码，因此请确保您熟悉 <a href="https://www.php.net/manual/zh/language.oop5.basic.php" target="_blank" rel="noopener noreferrer">类与对象</a> 、 <a href="https://www.php.net/manual/zh/language.namespaces.php" target="_blank" rel="noopener noreferrer">namespace（命名空间）</a> 和 <a href="https://www.php.net/manual/zh/language.oop5.traits.php" target="_blank" rel="noopener noreferrer">Trait</a> 等，理解这些概念将有助于你更快地掌握 Yii 2.0。</p>
<h3 id="oop-面向对象编程-object-oriented-programming" tabindex="-1"><a class="header-anchor" href="#oop-面向对象编程-object-oriented-programming"><span>OOP（面向对象编程 Object Oriented Programming）</span></a></h3>
<p>对面向对象编程的基本理解是必需的。如果您不熟悉它，请选中其中一个 可用的教程，如 <a href="https://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762" target="_blank" rel="noopener noreferrer">tuts+</a>。</p>
<p>请注意，您的应用程序越复杂，您需要学习的更高级的 OOP 概念才能成功 掌握这种复杂度。</p>
<h3 id="命令行-和-composer" tabindex="-1"><a class="header-anchor" href="#命令行-和-composer"><span>命令行 和 Composer</span></a></h3>
<p>Yii 广泛使用了标准的 PHP 包管理器 <a href="https://getcomposer.org/" target="_blank" rel="noopener noreferrer">Composer</a>，因此请确保您阅读 并理解其指南。如果您不熟悉命令行，现在该开始尝试了。 一旦你学会了基础知识，你就永远不想在没有它的情况下工作。</p>
<blockquote>
<p>参考官方文档链接：<br>
<a href="https://www.yiiframework.com/doc/guide/2.0/zh-cn/intro-yii" target="_blank" rel="noopener noreferrer">www.yiiframework.com/doc/guide/2.0...</a><br>
<a href="https://www.yiiframework.com/doc/guide/2.0/zh-cn/start-prerequisites" target="_blank" rel="noopener noreferrer">www.yiiframework.com/doc/guide/2.0...</a></p>
</blockquote>
<blockquote>
<p>💖喜欢本文档的，欢迎点赞、收藏、留言或转发，谢谢支持！<br>
作者邮箱：zhuzixian520@126.com，github地址：<a href="https://github.com/zhuzixian520" target="_blank" rel="noopener noreferrer">github.com/zhuzixian520</a></p>
</blockquote>
</div></template>


